/*
 * @lc app=leetcode.cn id=402 lang=javascript
 *
 * [402] 移掉 K 位数字
 */

// @lc code=start
/**
 * @param {string} num
 * @param {number} k
 * @return {string}
 */
var removeKdigits = function(num, k) {
  if(k >= num.length) return '0';
  let stack = [];
  for (let i = 0; i < num.length; i++) {
    while(stack.length && num[i] < stack[stack.length - 1] && k-- > 0) stack.pop();
    stack.push(num[i]);
  }

  while(k-- > 0) stack.pop();
  while(stack[0] === '0') stack.shift();

  return stack.join('') || '0';
};
// var removeKdigits = function(num, k) {
//   let arr = num.split('');
//   k = num.length - k;
//   if(k <=0) return '0';

//   if(arr.length < k) return arr.join('');
//   // 可替换为滚动数组
//   let temp = [[],[]];
//   for (let i = 0; i <= arr.length; i++) {
//     temp.push([]);
//   }

//   for (let i = 1; i <= arr.length; i++) {
//     for (let j = 1; j <= i; j++) {
//       if(i === 1) {
//         temp[i][j] = arr[i - 1] + '';
//         continue;
//       }
//       if(j === 1) {
//         temp[i][j] = Math.min(temp[i - 1][j], arr[i - 1]) + '';
//         continue;
//       }
//       if(i === j) {
//         temp[i][j] = temp[i - 1][j - 1] + arr[i - 1] + '';
//         continue;
//       } 

//       // 不选择 i
//       let val1 = temp[i - 1][j];
//       // 选择 i
//       let val2 = temp[i - 1][j - 1] + '' + arr[i - 1];
//       temp[i][j] = Math.min(val1, val2) + '';
//     }
//   }
//   console.log('ss')
//   return temp[arr.length][k];
// };
// @lc code=end

